From: Rui Matos Date: Sat, 19 May 2012 15:25:00 +0000 (+0200) Subject: shell-app: Raise windows in reverse order to preserve the stacking X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~6575 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=b61ada72cc1394126f2fbfcb9b883ce3a8481034;p=gnome-shell.git shell-app: Raise windows in reverse order to preserve the stacking ShellApp keeps track of windows sorted by most recently used first which means that when raising windows we need to start from the end of the list to finish with the correct stacking order. This patch just makes the code agree with the comment which was already there. https://bugzilla.gnome.org/show_bug.cgi?id=676371 --- diff --git a/src/shell-app.c b/src/shell-app.c index e1648418e..31756a329 100644 --- a/src/shell-app.c +++ b/src/shell-app.c @@ -493,7 +493,7 @@ shell_app_activate_window (ShellApp *app, return; else { - GSList *iter; + GSList *windows_reversed, *iter; ShellGlobal *global = shell_global_get (); MetaScreen *screen = shell_global_get_screen (global); MetaDisplay *display = meta_screen_get_display (screen); @@ -511,13 +511,16 @@ shell_app_activate_window (ShellApp *app, /* Now raise all the other windows for the app that are on * the same workspace, in reverse order to preserve the stacking. */ - for (iter = windows; iter; iter = iter->next) + windows_reversed = g_slist_copy (windows); + windows_reversed = g_slist_reverse (windows_reversed); + for (iter = windows_reversed; iter; iter = iter->next) { MetaWindow *other_window = iter->data; if (other_window != window) meta_window_raise (other_window); } + g_slist_free (windows_reversed); /* If we have a transient that the user's interacted with more recently than * the window, pick that.